# koroFileHeader at Yungoal acer
# Create: 2021-05-25 13:36:38
# LastEdit: 2021-05-25 14:25:25
"""解析 run command 返回的结果
直接传入 properties.output.value 的值

Windows 的返回结果：
{'startTime': '2021-05-20T08:51:58.8606138+00:00',
'endTime': '2021-05-20T08:52:29.2102968+00:00',
'status': 'Succeeded',
'properties': {'output': {'value': [{'code': 'ComponentStatus/StdOut/succeeded',
                                    'level': 'Info',
                                    'displayStatus': 'Provisioning succeeded',
                                    'message': 'Thursday, May 20, 2021 '
                                                '8:52:10 AM\n'
                                                '\n'},
                                    {'code': 'ComponentStatus/StdErr/succeeded',
                                    'level': 'Info',
                                    'displayStatus': 'Provisioning succeeded',
                                    'message': ''}]}},
'name': '01df2589-8af3-496b-9004-b2d828d6932c'}

Linux 的返回结果
{'startTime': '2021-05-23T07:13:40.9387012+00:00',
'endTime': '2021-05-23T07:14:05.0343358+00:00',
'status': 'Succeeded',
'properties': {'output': {'value': [{'code': 'ProvisioningState/succeeded',
                                    'level': 'Info',
                                    'displayStatus': 'Provisioning succeeded',
                                    'message': 'Enable succeeded: \n'
                                                '[stdout]\n'
                                                '2021年 05月 23日 星期日 15:13:51 '
                                                'CST\n'
                                                '\n'
                                                '[stderr]\n'}]}},
'name': '099ad8f2-bacc-442c-b6f7-c8ae9dff81de'}

这里粘贴的返回结果，是python打印出来的json.loads()之后的对象，所以直接作为字典使用。
"""
__author__ = '749B'

import unittest

if __name__ == '__main__':
    import os
    import sys
    sys.path.append(os.getcwd())
# pylint: disable = import-error
from azure_client.data_format import runcmd_parse_output


class RuncmdParseOutputTestCase(unittest.TestCase):

    def test_windows(self):
        res = {
            'startTime': '2021-05-20T08:51:58.8606138+00:00',
            'endTime': '2021-05-20T08:52:29.2102968+00:00',
            'status': 'Succeeded',
            'properties': {'output': {'value': [{'code': 'ComponentStatus/StdOut/succeeded',
                                                'level': 'Info',
                                                'displayStatus': 'Provisioning succeeded',
                                                'message': 'Thursday, May 20, 2021 '
                                                            '8:52:10 AM\n'
                                                            '\n'},
                                                {'code': 'ComponentStatus/StdErr/succeeded',
                                                'level': 'Info',
                                                'displayStatus': 'Provisioning succeeded',
                                                'message': ''}]}},
            'name': '01df2589-8af3-496b-9004-b2d828d6932c'} 
        output = res['properties']['output']['value']
        std_out, std_err = runcmd_parse_output(output)
        self.assertEqual(std_out, 'Thursday, May 20, 2021 8:52:10 AM\n\n')
        self.assertEqual(std_err, '')


    def test_linux(self):
        res = {'startTime': '2021-05-23T07:13:40.9387012+00:00',
            'endTime': '2021-05-23T07:14:05.0343358+00:00',
            'status': 'Succeeded',
            'properties': {'output': {'value': [{'code': 'ProvisioningState/succeeded',
                                                'level': 'Info',
                                                'displayStatus': 'Provisioning succeeded',
                                                'message': 'Enable succeeded: \n'
                                                            '[stdout]\n'
                                                            '2021年 05月 23日 星期日 15:13:51 '
                                                            'CST\n'
                                                            '\n'
                                                            '[stderr]\n'}]}},
            'name': '099ad8f2-bacc-442c-b6f7-c8ae9dff81de'}
        output = res['properties']['output']['value']
        std_out, std_err = runcmd_parse_output(output)
        self.assertEqual(std_out, '2021年 05月 23日 星期日 15:13:51 CST\n')
        self.assertEqual(std_err, '')


if __name__ == '__main__':
    unittest.main()

